package cn.edu.zafu.bigdata.liuwenyi;

// 1. 验证 final 类
final class FinalClass { // 定义 final 类
    public void showMessage() {
        System.out.println("This is a final class.");
    }
}

// 尝试继承 FinalClass 会导致编译错误
// class SubClass extends FinalClass {} // 这行代码会导致编译失败

// 2. 验证 final 方法
class Parent {
    public final void finalMethod() { // 定义 final 方法
        System.out.println("This is a final method in Parent class.");
    }
}

class Child extends Parent {
    // 尝试重写 final 方法将导致编译错误
    // public void finalMethod() { // 这行代码会导致编译失败
    //    System.out.println("Trying to override final method.");
    // }
}

// 3. 验证 final 变量
class TestFinalVariable {
    public void demo() {
        final int finalVar = 10; // 定义 final 变量并初始化
        // finalVar = 20; // 这行代码会导致编译失败，因为 final 变量不能重新赋值
        System.out.println("Final variable: " + finalVar);
    }
}

public class Final_Test {
    public static void main(String[] args) {
        // 验证 final 类
        FinalClass finalClass = new FinalClass();
        finalClass.showMessage();

        // 验证 final 方法
        Child child = new Child();
        child.finalMethod(); // 调用继承自父类的 final 方法

        // 验证 final 变量
        TestFinalVariable testVar = new TestFinalVariable();
        testVar.demo(); // 调用演示 final 变量的行为
    }
}
